﻿using System.Collections.Generic;
using System.Web.Mvc;
using ControlModule.Daos;
using ControlModule.Models;
using ControlModule.QuizModule;
using ControlModule.Security;

namespace ControlModule.Controllers
{
    public class LabworkController : Controller
    {
        //
        // GET: /Labwork/

        private static FullControlQuestion _fullControlQuestion = null;

        /// <summary>
        /// 
        /// даный метод открывает страницу по get запросу
        /// </summary>
        /// <param name="labworkId">параметр по которому обращается к базе</param>
        /// <returns>Вся лабораторная работа</returns>
        [Authorize(Roles = "STUDENT")]
        public ActionResult Work(int labworkId)
        {
            FullLabwork labwork = FullLabworkDao.GetFullLabworkById(labworkId);
            return View(labwork);
        }

        /// <summary>
        /// даный метод обрабатывает данные которые возвращает форма со страници work
        /// </summary>
        /// <param name="fullLabwork"></param>
        /// <returns></returns>
        [Authorize(Roles = "STUDENT")]
        [HttpPost]
        public ActionResult Work(FullLabwork fullLabwork)
        {
            FullLabworkDao.SaveFinishedLabwork(fullLabwork);
            return RedirectToAction("Control", "Labwork", new { labworkId = fullLabwork.Id });
        }
        /// <summary>
        /// даный метод обрабатывает контольные вопросы для студента
        /// </summary>
        /// <param name="labworkId"></param>
        /// <returns></returns>
        [Authorize(Roles = "STUDENT")]
        public ActionResult Control(int labworkId)
        {
            if ((ControlQuestionManager.Get().IsControlQuestionLoaded() && _fullControlQuestion == null) || !ControlQuestionManager.Get().IsControlQuestionLoaded())
            {
                ControlQuestionManager.Get().LoadFullControlQuestionsForLabwork(labworkId);
                _fullControlQuestion = ControlQuestionManager.Get().ReadNext();
            }

            if (_fullControlQuestion != null)
                return View(_fullControlQuestion);

            return RedirectToAction("ControlResult", "Labwork", new { labworkId });
        }
        /// <summary>
        /// даный метод позволяет добавить в таблицу ControlQuestion логические связи(правильные не правильные ответы)
        /// </summary>
        /// <param name="labworkId"></param>
        /// <param name="fullControlQuestion"></param>
        /// <returns></returns>
        [Authorize(Roles = "STUDENT")]
        [HttpPost]
        public ActionResult Control(int labworkId, FullControlQuestion fullControlQuestion)
        {
//            if (fullControlQuestion != null)
//                ControlQuestionDao.SaveControlQuestionAnswer(labworkId, fullControlQuestion);
            _fullControlQuestion = ControlQuestionManager.Get().ReadNext();
            return RedirectToAction("Control", new { labworkId });
        }
        /// <summary>
        /// даный метод передает во view информацию о завершении контроля лабораторной работу по её id
        /// </summary>
        /// <param name="labworkId">параметр по которому обри к лабе</param>
        /// <returns></returns>
        public ActionResult ControlResult(int labworkId)
        {
            return View();
        }
    }
}
